package com.yunhe.tianhe.rentcars.service.permission;



import com.yunhe.tianhe.commons.dto.Pageable;
import com.yunhe.tianhe.rentcars.dto.TreeNode;
import com.yunhe.tianhe.rentcars.entity.permission.Menu;
import com.yunhe.tianhe.rentcars.entity.permission.Resource;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ResourceService {
    /**
     * 添加
     * @param resource
     */
    void save(Resource resource);

    /**
     * 删除
     * @param permisId
     */
    void delete(Long permisId);

    /**
     * 修改
     * @param resource
     */
    void update(Resource resource);


    /**
     * 批量删除
     * @param ids
     */
    void deleteBatch(String ids);

    /**
     * 根据id查询权限的详细信息
     * @param permisId
     * @return
     */
    Resource find(Long permisId);

    /**
     * 查所有权限
     * @return
     */
    List<Resource> findAll();

    /**
     * 分页查询
     * @param offset
     * @param size
     * @return
     */
    Pageable<Resource> findPage(@Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 根据角色id查角色所有权限
     * @param roleId
     * @return
     */
    List<Resource> findByRole(Long roleId);

    /**
     * 根据类型查询
     * @param type
     * @return
     */
    List<Resource> findByType(Integer type);

    /**
     * 根据parentid查找权限列表
     * @param parentId
     * @return
     */
    List<Resource> findByParentId(Long parentId);

    /**
     * 查找所有权限变成树节点
     * @return
     */
    List<TreeNode> findTreeNodes(Long roleId);

    /**
     * 根据用户名查找用户权限
     * @param userId
     * @return
     */
    List<Resource> findAllPermission(Integer userId);

    /**
     * 根据点击的页面id和角色id查找按钮
     * @param permisId
     * @param roleId
     * @return
     */
    List<Resource> findBtn(@Param("permisId") Long permisId, @Param("roleId") Long roleId);

    List<Menu> findResourceMenu(long roleid);
}
